1. Field of the Invention
The present invention relates to computing systems, and more particularly, to efficiently managing data transfer.
2. Background of the Invention
Conventional computing systems typically include several functional components. These components may include a central processing unit (“CPU”), main memory, input/output (“I/O”) devices, and streaming storage devices (for example, tape drives).
In conventional systems, the main memory is coupled to the CPU via a system bus or a local memory bus. The main memory (may also be referred to as “CPU memory”) is used to provide the CPU access to data and/or program information that is stored in CPU memory at execution time. Typically, the CPU memory is composed of random access memory (“RAM”) circuits. A computing system is often referred to as a host system. The term computing system/host system as used throughout this specification, includes network servers.
Different types of hardware devices (may also be referred to as peripheral devices) may operationally interface with the CPU, for example, a host bus adapter/host channel adapter or any other peripheral device. The peripheral devices typically have their own memory (may be referred to as “device memory”) and the CPU transfers information (for example, control commands/data) to device memory. It is desirable that transfer to device memory is efficient and that the peripheral device becomes aware of when a transfer is completed, with minimal use of CPU resources and minimal latency.